package com.fast.alden.common.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Json工具类
 */
public class JsonUtils {
    /**
     * 线程安全，可全局使用
     */
    public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    /**
     * 将java对象序列化为json字符串
     *
     * @param obj Java对象
     * @return json字符串
     * @throws JsonProcessingException
     */
    public static String toJSON(Object obj) throws JsonProcessingException {
        return OBJECT_MAPPER.writeValueAsString(obj);
    }

    /**
     * 将json字符串反序列化为指定类型对象
     *
     * @param json json格式字符串
     * @param c    目标类型
     * @param <T>  任意类型
     * @return 目标对象
     * @throws JsonProcessingException
     */
    public static <T> T fromJSON(String json, Class<T> c) throws JsonProcessingException {
        if (json == null) {
            return null;
        }
        return OBJECT_MAPPER.readValue(json, c);
    }
}
